#ifndef __NODE_H__
#define __NODE_H__
#include "cppcore.h"


template <typename T>
class Node {
public:
    T data;
    Node<T>* next;

    // 将传入的结点接到后面.
    Node<T>* cat(Node<T>* follow);

    // 判断这个结点是否符合条件 (转发).
    static bool found(
        Node<T>* that,
        std::vector<std::wstring>& strs,
        std::vector<int>& code);
    // 将 data 域的二进制写入文件.
    static void     serialize   (Node<T>* that);
    // 调用 data 的 print (转发).
    static void     print       (Node<T>* that);
    // 链表指向下一个结点.
    static Node<T>* nextNode    (Node<T>* that);
    // 链表不指向下一个结点.
    static Node<T>* nowNode     (Node<T>* that);
    // 删除当前结点.
    static void     erase       (Node<T>* that);
};

class Student;
class Course;


#endif /* __NODE_H__ */
